package com.xialinrui.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xialinrui.dto.TodoCompletedDto;
import com.xialinrui.entity.Affair;
import com.xialinrui.entity.Todo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.sql.Date;
import java.util.List;

/**
 * @author xialinrui
 */
@Mapper
@Repository
public interface TodoMapper extends BaseMapper<Todo> {
    void changeComplete(@Param("todo_id") Long todoId, @Param("affair_id") Long affairId);

    List<Affair> getTodoInsertedList(@Param("id") Long id);

    void setIncomplete(@Param("id") Long id);

    List<Todo> getIncompleteTodoListWithOutDailyByCategoryId(@Param("todo_category_id") Long id);

    List<Todo> getTodoListIncomplete();

    List<Todo> listDailyNotCompletedToday(@Param("date") Date date);

    List<Todo> listDailyCompletedToday(@Param("date") Date date);

    List<TodoCompletedDto> getCompletedTodoListWithOutDaily();

    List<Todo> getTodosNotInserted();

    List<Todo> getTodosNotInsertedByCategoryId(@Param("todo_category_id") Long id);

    List<Todo> getTodoListIncompleteDaily(@Param("date") Date date);

    void insertIncome(@Param("todo_id") Long todoId, @Param("affair_id") Long affairId, @Param("income_id") Long incomeId);

    Long getCompletedTodoIncomeId(@Param("todo_id") Long id);

    Page<Todo> getIncompleteTodoListWithOutDailyByCategoryIdNotFolders(@Param("page") Page<Todo> page, @Param("todo_category_id") Long id);

    List<Date> getAllDate();

    List<Todo> getIncompleteTodoListWithOutDailyByCategoryIdNotFoldersNoPage( @Param("todo_category_id") Long id);

    void defaultAcquire(@Param("category_id") Long id, @Param("default_money_numbers") Double money,@Param("default_love_numbers") Integer love);
}
